package com.yjq.programmer.service;

import com.yjq.programmer.dto.MusicDTO;
import com.yjq.programmer.dto.MusicMenuDTO;
import com.yjq.programmer.dto.PageDTO;
import com.yjq.programmer.dto.ResponseDTO;

import java.util.List;

/**
 * @author 杨杨吖
 * @QQ 823208782
 * @WX yjqi12345678
 * @create 2022-11-12 15:41
 */
public interface IMusicService {

    // 分页获取音乐数据
    ResponseDTO<PageDTO<MusicDTO>> getMusicListByPage(PageDTO<MusicDTO> pageDTO);

    // 保存音乐数据(添加、修改)
    ResponseDTO<Boolean> saveMusic(MusicDTO musicDTO);

    // 删除音乐数据
    ResponseDTO<Boolean> removeMusic(MusicDTO musicDTO);

    // 根据专辑id获取音乐数据
    ResponseDTO<List<MusicDTO>> getMusicListByAlbumId(MusicDTO musicDTO);

    // 根据id获取音乐数据
    ResponseDTO<MusicDTO> getMusicById(MusicDTO musicDTO);

    // 搜索音乐
    ResponseDTO<List<MusicDTO>> searchMusic(MusicDTO musicDTO);

    // 音乐播放数增加
    ResponseDTO<Boolean> addMusicListen(MusicDTO musicDTO);

    // 根据歌单id获取音乐数据
    ResponseDTO<List<MusicDTO>> getMusicListByMusicMenuId(MusicMenuDTO musicMenuDTO);

    // 根据歌手id获取音乐数据
    ResponseDTO<List<MusicDTO>> getMusicListBySingerId(MusicDTO musicDTO);

    // 获取前五个收藏最多的音乐
    ResponseDTO<List<MusicDTO>> getTopFiveCollectMusic();

    // 获取音乐总数
    ResponseDTO<Integer> getMusicTotal();

    // 获取全部音乐数据
    ResponseDTO<List<MusicDTO>> getAllMusicList();

    // 获取前五个最新上架的音乐
    ResponseDTO<List<MusicDTO>> getTopFiveNewMusic();

    // 获取前五个播放量最高的音乐
    ResponseDTO<List<MusicDTO>> getTopFiveListenMusic();
}
